fat: reset VFAT short alias checksum on first match
authorSergei Shtylyov <[email protected]>
Mon, 2 Jan 2012 06:54:29 +0000 (06:54 +0000)
committerWolfgang Denk <[email protected]>
Thu, 5 Jan 2012 15:03:24 +0000 (16:03 +0100)
The VFAT short alias checksum read from a long file name is only overwritten
when another long file name appears in a directory list. Until then it renders
short file names invisible that have the same checksum. Reset the checksum on
first match.

Signed-off-by: Sergei Shtylyov <[email protected]>
Signed-off-by: Martin Mueller <[email protected]>
fs/fat/fat.c

index dbb8db92f07a397fdd6998349f3b82ae2d9bca0f..1542194a1a66a983df14fb41bbe22f26fdc1c091 100644 (file)
@@ -633,6 +633,7 @@ static dir_entry *get_dentfromdir (fsdata *mydata, int startsect,
                        }
 #ifdef CONFIG_SUPPORT_VFAT
                        if (dols && mkcksum(dentptr->name) == prevcksum) {
+                               prevcksum = 0xffff;
                                dentptr++;
                                continue;
                        }
@@ -963,6 +964,7 @@ do_fat_read (const char *filename, void *buffer, unsigned long maxsize,
 #ifdef CONFIG_SUPPORT_VFAT
                        else if (dols == LS_ROOT &&
                                 mkcksum(dentptr->name) == prevcksum) {
+                               prevcksum = 0xffff;
                                dentptr++;
                                continue;
                        }